مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش Class ها در سی شارپ - کلاس Static قسمت هفتم


کلاس استاتیک (Static class)

در این مقاله از سری مقالات نوع داده کلاس در سی شارپ قصد داریم تا با کلاس استاتیک (static class) آشنا شویم .

تا به اینجا در سری مقالات مربوط به نوع داده کلاس (class) درسی شارپ با تعریف نوع داده کلاس آشنا شدیم و از آن به عنوان یک طرح کلی و یا الگو برای ایجا اشیا یاد کردیم. همچنین با چگونگی تعریف شی (object) و فراخوانی سازنده ها ( constructors)  برای مقدار دهی به شی (object) اشنا شدیم. و گفتیم از روی یک کلاس (class) می توان چندین شی(object) ساخت. سپس سازنده (constructor) را  تعریف کردیم و به انواع آن در نوع داده کلاس در سی شارپ پرداختیم. در این مقاله می خواهیم به بحث دیگری با عنوان کلاس استاتیک (static class) و اعضای استاتیک (static members) در نوع داده کلاس در سی شارپ بپردازیم .

کلاس استاتیک (static class):  

از دیدگاه کلی یک کلاس استاتیک (static class) مانند یک کلاس غیر استاتیک (none static class) است با همان بدنه و تعاریف ، هر چند در بین تعریف این دو نوع از کلاس (class) تفاوت ها یی وجود دارد :  

  • قبل از کلمه کلید class از کلمه کلیدی static استفاده می شود.
  • از یک کلاس استاتیک (static class) نمی توان نمونه (instance) و یا شی (object) ایجاد کرد به عبارت دیگر استفاده از کلمه کلیدیnew برای ایجاد و مقدار دهی متغیری (شی) از نوع  داده یک کلاس استاتیک(static class) بی معنا است. در این نوع از کلاس  یعنی کلاس استاتیک (static class) برای دسترسی به اعضای کلاس (members) مانند ، فیلد ها (fields) و متد ها (methods) از نام کلاس استاتیک (static class)  استفاده می شود .

مثال : فراخوانی یک متد (method) با دسترسی عمومی (public) در یک کلاس استاتیک (static class).

class Program

        {
            static void Main(string[] args)

            {
                 double result = System.Math.Max(13 ,40);
                Console.WriteLine( result);
            }
        }

در این مثال متد Max از کلاس استاتیک math ، (یک کلاس استاتیکی  که در فضای نام  system قرار دارد و توسط خود  فرم ورک تعریف شده است.) فراخوانی شده است. همانطور که گفته شد برای فراخونی این متد هیچ شی ای از کلاس  math  تعریف نشده است و متد به صورت مستقیم توسط نام کلاس فراخونی شده است.

  • تمامی اعضای یک کلاس استاتیک (static class) از نوع استاتیک (static) هستند. در واقع یک کلاس استاتیک (static class) را می توان مخزنی از متد های استاتیکی (static methods) دانست که برای انجام عملی که به منظور انجام آن بوجود آمده اند تنها با پارامترهای ورودی خود ، کار می کنند.
  • کلاس استاتیک (static class)  مهر وموم شده (sealed) هستند در نتیجه نمی توان از انها ارث (inheritance) برد. ( در مورد کلاس مهر وموم شده (sealed) در مقالات بعدی بیشتر صحبت می کنیم.)
  • کلاس استاتیک (static class)  نمی تواند از هیچ  کلاسی ارث بری (inheritance) داشته باشند بجز کلاس object ( تمام کلاس ها به صورت مستقیم و غیر مستقیم از کلاس object ارث بری داند)
  • کلاس استاتیک (static class) نمی توانند سازنده (constructor )  غیر استاتیک داشته باشند البته  قطعا از سازنده استاتیک (static constructor) می توانند برای مقدار دهی متغیر های استاتیک خود استفاده کنند .

نکته

یک کلاس استاتیک (static class) مانند یک کلاس غیر استاتیک (none static class) با سازنده خصوصی (private constructor) است  که تمامی اعضای داده ای (data members) واعضای تابعی (functional members) در آن از نوع استاتیک (static) تعریف شده باشند. در این حالت سازنده  خصوصی (private constructor) می تواند تضمین کننده این باشد که هیچ شی ای از این  کلاس ساخته  نشود.  اما در مورد یک کلاس استاتیک (static class) این برتری  وجود دارد که کامپایلر تضمین می کند که هیچ شی ای (object) از یک کلاس استاتیک(static class) ساخته نمی شود، در کنار خصوصیات دیگری که در بالا از ان ها نام برده شد.

 

مثال :  تعریف کلاس استاتیک (static class)

namespace ClassStatment

{  
 
  static  class UniteConvertor

        {
            public static double  meterToCentimeter(  double m )

            {

                return (m * 100);

            }

            public static int centimeterToMeter(int c)

            {

                return (c / 100);

            }

            public static double fahrenheitToCentigrade(double fahren)

            {

                return ( (fahren-32) / 1.8);

            }

            public static double centigradeToFahrenheit(double centi)

            {

                return (centi* 1.8 +32);

            }

        }

        class Program

        {
            static void Main(string[] args)

            {
                Console.WriteLine("please enter  unit name");             

                string unitname = Console.ReadLine();

                if  (unitname=="m")

                {
                    Console.WriteLine("please enter  meter   ");

                    double m = Convert.ToDouble( Console.ReadLine());

                    double c = UniteConvertor.meterToCentimeter(m);                 

                    Console.WriteLine("meterToCentimeter=  " + c);

                }



               else if (unitname == "c")

                {
                    Console.WriteLine("please enter  centimeter  ");

                    int c = Convert.ToInt32(Console.ReadLine());

                    double m = UniteConvertor.centimeterToMeter(c);

                    Console.WriteLine("meterToCentimeter=  " + m);

                }

               else if (unitname == "f")

                {
                    Console.WriteLine("please enter  fahrenheight  ");

                    double f = Convert.ToDouble(Console.ReadLine());

                    double centi = UniteConvertor.fahrenheitToCentigrade(f);

                    Console.WriteLine("meterToCentimeter=  " + centi);

                }

               else  if (unitname == "centi")

                {
                    Console.WriteLine("please enter  centigrade");

                    double centi = Convert.ToDouble(Console.ReadLine());

                    double f = UniteConvertor.centigradeToFahrenheit(centi);

                    Console.WriteLine("meterToCentimeter=  " + f);

                }

                else Console.WriteLine("please enter  m , c ,f or centi as unit anme");

            }

        }

      


در این مثال یک کلاس استاتیک (static class) با نام UniteConvertor  تعریف شده است . هدف از تعریف این کلاس ، انجام تبدیل انواع واحد ها به یکدیگر است. همانطور که مشاهده می کنید تمام اعضای کلاس ، استاتیک (static ) تعریف شده اند. درمتد main در زمان فراخوانی متد های این کلاس از هیچ سازنده ای استفاده نشده است  و هیج شی ای (object) ایجاد نشده است و فراخوانی با استفاده از نام کلاس صورت گرفته است .

 توجه کنید که در پیاده سازی کد فوق ، به جای ساختار if های تو در تو ، همانطور که در مقالات قبلی بحث شد می توانستیم از ساختار switch استفاده کنیم .

خروجی قطعه کد بالا با توجه به مقادیر وارد شده توسط کاربر می تواند به صورت زیر باشد :

please enter  unit name

m

please enter  meter

160

meterToCentimeter= 16000

 

گرد اوری : سمانه وزیریان

 

فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…

توضیحات کلی مجموعه:   آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…
فصلِ: 9 , تعداد قسمت ها: 59 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…

توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…
فصلِ: 13 , تعداد قسمت ها: 120 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…

دوره صفر تا صد  آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…
فصلِ: 4 , تعداد قسمت ها: 14 , سطح: مقدماتی

این فصل در یک نگاه:

توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …

به نام خدا   بازی‌سازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازی‌ساز حرفه‌ای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…
فصلِ: 11 , تعداد قسمت ها: 92 , سطح: صفر تا صد

این فصل در یک نگاه:

اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…

مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید